/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerPedido;
import GUI.Bibliotecario.AdminPedidos.PanelComprarPedido;
import LogicaNegocio.Biblioteca.ItemPedido;
import LogicaNegocio.Biblioteca.Pedido;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 * Esta clase en java permite el control de eventos
 * para comprar los pedidos.
 *
 * @author sebaxtian
 * Archivo: ControlComprarPedido.java
 * @version 1.0
 * Fecha: mar jun  8 22:30:03 COT 2010
 */


public class ControlComprarPedido {

    //Atributos de clase.
    private PanelComprarPedido panelComprarPedido;
    private ManagerPedido gestorPedido;


    public ControlComprarPedido(PanelComprarPedido panelComprarPedido) {
        this.panelComprarPedido = panelComprarPedido;
        gestorPedido = new ManagerPedido();
    }

    public void buscarPedido() {
        try{
            int numeroPedido = Integer.parseInt(panelComprarPedido.textFieldNumPedido.getText());
            Pedido pedido = gestorPedido.obtenerPedido(numeroPedido);
            if(pedido != null){
                mostrarPedido(pedido);
            }else{
                JOptionPane.showMessageDialog(panelComprarPedido, "El pedido con numero pedido: "+numeroPedido+" no esta registrado", "Comprar Pedido", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch(NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelComprarPedido, "El numero de pedido debe ser un valor entero", "Comprar Pedido", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    private void mostrarPedido(Pedido pedido) {
        panelComprarPedido.textFieldCeduaBibliotecario.setText(pedido.getCedulaBibliotecario()+"");
        panelComprarPedido.checkBoxComprado.setSelected(pedido.getComprado());
        mostrarItems(pedido.getListaItemsPedidos());
    }

    private void mostrarItems(List<ItemPedido> listaItems) {
        ItemPedido item;
        for(int i = 0; i < listaItems.size(); i++){
            if(panelComprarPedido.tablaItems.getRowCount() <= i){
                DefaultTableModel tmp = (DefaultTableModel)panelComprarPedido.tablaItems.getModel();
                Object fila[] = {"",""};
                tmp.addRow(fila);
            }
            item = listaItems.get(i);
            panelComprarPedido.tablaItems.setValueAt(item.getIsbnPedido(), i, 0);
            panelComprarPedido.tablaItems.setValueAt(item.getCantidad(), i, 1);
        }
    }

    private void limpiarItems() {
        for(int i = 0; i < panelComprarPedido.tablaItems.getRowCount(); i++){
            DefaultTableModel tmp = (DefaultTableModel)panelComprarPedido.tablaItems.getModel();
            tmp.removeRow(i);
            if(tmp.getRowCount()>0){
                limpiarItems();
            }
        }
    }

    public void limpiar() {
        panelComprarPedido.textFieldCeduaBibliotecario.setText("");
        panelComprarPedido.textFieldNumPedido.setText("");
        panelComprarPedido.checkBoxComprado.setSelected(false);
        limpiarItems();
    }

    public void comprarPedido() {
        int numeroPedido = -1;
        try{
            numeroPedido = Integer.parseInt(panelComprarPedido.textFieldNumPedido.getText());
            Pedido pedido = gestorPedido.obtenerPedido(numeroPedido);
            if(pedido != null){
                pedido.setComprado(true);
                gestorPedido.actualizarPedido(pedido.getNumeroPedido(), pedido);
                JOptionPane.showMessageDialog(panelComprarPedido, "El pedido ha sido comprado con exito", "Comprar Pedido", JOptionPane.INFORMATION_MESSAGE);
                limpiar();
            }
        } catch(NumberFormatException ex){
            JOptionPane.showMessageDialog(panelComprarPedido, "El numero de pedido debe ser un valor entero", "Comprar Pedido", JOptionPane.INFORMATION_MESSAGE);
        }
    }
}
